package com.ehsy.service;

import com.dtflys.forest.annotation.*;
import com.dtflys.forest.converter.json.ForestJacksonConverter;
import com.ehsy.common.ResponseVo;
import com.ehsy.model.MyJacksonConverter;
import com.ehsy.model.UserInfo;
import org.springframework.stereotype.Component;

/**
 * @author YanZhen_Li
 * @version 1.0
 * @title DataConversionService
 * @description
 * @create 2024/6/18 14:06
 */
@Component
@Address(host = "127.0.0.1", port = "8080")
public interface DataConversionService {
    /**
     * 进行请求序列化配置
     * 这个注解会执行com.dtflys.forest.converter.json.ForestJsonConverter.encodeRequestBody方法进行序列化
     * ! 我们的方法需要是Post请求，并且有请求体才能调用这个方法
     */
    @Post("/test/request/json/body")
    @BodyType(type = "json", encoder = MyJacksonConverter.class)
    ResponseVo<UserInfo> test1(@JSONBody UserInfo user);

    /**
     * foreset会自动的给匹配我们的结果类型
     */
    @Get("/test/request/json/body")
    ResponseVo<UserInfo> test2(@Query UserInfo user);

    /**
     * 我们也可以自己配置指定的结果类型
     */
    @Get(
        url = "/test/request/json/body",
        dataType = "json"
    )
    ResponseVo<UserInfo> test3(@Query UserInfo user);

    /**
     * 我们也可以自己配置指定的结果序列化处理器
     */
    @Get(
            url = "/test/request/json/body",
            decoder = MyJacksonConverter.class
    )
    ResponseVo<UserInfo> test4(@Query UserInfo user);
}
